/**
 * 1、谁调用返回给谁
 * 2、在哪里调用就返回到哪里
 */

/**
 * 求两数之差
 * @param {*} minuend 被减数
 * @param {*} subtrahend 减数
 * @returns 返回第一个参数(被减数)减去第二个参数(减数)的差值
 */
function jianfa( minuend , subtrahend ){
    if( typeof(minuend) !== 'number' || typeof(subtrahend) !== 'number' ){
        let ex = new Error( '不是数字类型无法求差值' );
        throw ex ;
    }
    return minuend - subtrahend ;
}

/**
 * 
 * @param {*} a 第一个操作数
 * @param {*} b 第二个操作数
 * @param {*} op 运算符号，可以是 + 、 - 、* 、/
 * @returns 
 */
function operate( a , b , op ){
    switch(op) {
        case '+':
            return; // 表示让函数立即结束(但并没有返回任何值)
        case '-':
            // operate 函数 调用了 jianfa 函数，所以 jianfa 函数执行后返回到 operate 函数
            let r = jianfa( a , b ) ; // 在这个位置调用的 jianfa ，所以它函数执行后会返回到这里
            return r ;
        case '*':
            return;
        case '/':
            return;
    }
    console.log( '执行完毕' );
}

let x = 58 ;
let y = 18 ;

let result = operate( x , y , '-' ); // 调用 operate 函数
console.log( result );

let r = operate( 100 , 2 , '%' );
console.log( r ); // undefined

let w = operate( 100 , 2 , '+' );
console.log( w ); // undefined